package com.itfenghuang.day09;

import java.io.*;

public class A04_字符流 {
    public static void main(String[] args) throws IOException {
        /**
         *  字符流
         *      字节流= 字节流 + 编码表
         *      字符输入流:
         *              FileReader
         *          构造方法:
         *             public  FileReader(String filename)
         *             public  FileReader(File file)
         *      字符输出流:
         *              FileWriter
         *              public FileWriter(String filename)
         *              public FileWriter(String(String filename,boolean append)
         *              public FileWriter(File file,boolean,append)
         *              public FileWriter(File file)
         *
         *  2.字符输出流注意事项
         *      1.如果文件不存在,则会创建该文件,并将数据写进去
         *      2.如果父级文件夹不存在会报异常
         *      3.如果想要写出一个int类型的数据,可以使用字符串
         *
         *  3.练习题
         *      键盘录入用户名和密码(String) ,然后进行永久花保存
         */
        //        method();
        // 字符输出流        method1();


        //创建字符输入流对象
        FileReader fr = new FileReader("D:\\it\\a.txt");
        //读取数据  一次读取一个字符
//        public int read()
//        fr.read();
//        int i ;
//        while ((i=fr.read())!=-1){
//            System.out.println((char)i);
//        }
        char[] chars=new char[1024];
        int len;
        while ((len=fr.read(chars))!=-1){
            String s = new String(chars,0,len);
            System.out.println(s);
        }
        fr.close();


    }

    private static void method1() throws IOException {
        //创建字符输出流
        FileWriter fw = new FileWriter("D:\\it\\aaa\\b.txt");
        //一次写出一个字符
        //public void wrute(int c)
        fw.write(99);
        char[] chars={'1','2','3'};
        //一次写出一个字符数据
        fw.write(chars);
        fw.write("\r\n");
        //一次写出一个字符数组的一部分
        fw.write(chars,1,2);
        fw.write("\r\n");
        //写一个字符串
        fw.write("你有很多饭吃不下?");
        fw.write("做人要鬼屎一点",0,7);
        fw.write("168");
        //刷新流
//        fw.flush();
//        fw.write("你好啊");
//        fw.flush();
        //释放资源 调用后不能继续写数据
        fw.close();
    }

    private static void method() throws IOException {
        FileInputStream fis = new FileInputStream("D:\\it\\a.txt");
        //一个字节一个字节读数据
        fis.read();
        fis.read();
        fis.read();
        int i;
        // UTF-8 一个中文三个字节
        while((i=fis.read())!=-1){
            System.out.println((char) i);
        }
        fis.close();
    }
}
